Console-to-Codeが一般提供開始になりました!
2024/10/11 6:20追記
What's newでも記事が追加されたため、アナウンスへのリンクを記載します。
こんにちは。まるとです。
現地時間2024/10/3に、Amazon Q Developer Console-to-Codeの一般提供開始(GA)が発表されました。
これにより、AWSマネジメントコンソール上からリソースに関する操作を記録し、AWS CloudFormationやCDKのコードを生成できるようになります。
例えば、従来ではAmazon RDSをAWS CloudFormationなどで構築しようとすると、公式ドキュメントなどを見ながらテンプレートを書いていく必要があります。
今回発表されたConsole-to-Codeを使用することで、AWSマネジメントコンソール上から実際にリソースを構築するだけで、AWS CloudFormationのテンプレートを生成できます。
これによりテンプレートの記述に慣れていない方でも、IaCを利用できます。
なお、本記事執筆時点でConsole-to-Codeに対応しているAWSサービスは以下のとおりです。
- Amazon VPC
- Amazon EC2
- Amazon RDS
触ってみる
具体的にどのような挙動になるのか、コードとして出力されたものを実際に使うまでやってみます。
今回はAmazon RDSを例に操作していきます。
AWSマネジメントコンソールでRDSを開きます。
RDSダッシュボードを開いた状態で、画面右端を確認するとコンソールから矢印が出ているアイコンが追加されています。
このアイコンを押下するとConsole-to-Codeのメニューが表示されます。
早速、「記録を開始」ボタンを押下して操作をConsole-to-Codeに認識させてみます。
「記録を開始」ボタンを押下すると、記録が進行中の画面になります。
これで操作がConsole-to-Codeに記録されていきます。
それでは、いつも通りデータベースを作成していきます。
今回は以下の構成で作成しました。
項目名 | 設定値 |
---|---|
DBエンジン | PostgreSQL |
エンジンバージョン | 16.3 |
認証情報管理 | セルフマネージド、パスワード自動作成 |
DBインスタンスクラス | t4g.micro |
ストレージクラス | gp3 |
ストレージ割り当て | 20 GiB |
ストレージの自動スケーリング | 1000 GiB |
データベース認証 | パスワード認証 |
Performance Insights をオンにする | 有効 |
Performance Insights の保持期間 | 7 |
拡張モニタリング | 無効 |
最初のデータベース名 | 設定なし |
DB パラメータグループ | default.postgres16 |
自動バックアップを有効にします | 有効 |
バックアップ保持期間 | 1 |
AWSマネジメントコンソールで実際にデータベースを作成すると、Console-to-Codeの画面でもcreateDBInstance
という操作が表示されます。
これでCLIコマンドやCloudFormation YAMLの生成準備は完了です。
それでは実際にCloudFormation YAMLの生成をしてみます。
CLIコマンドやCloudFormation YAMLを生成したい操作を選択後、「CFN YAMLを生成」ボタンを押下します。
ボタンを押下すると、操作に応じたCLIコマンドやCloudFormation YAMLが生成されます。
それでは生成されたものを見ていきます。
CLIコマンド
aws rds create-db-instance --engine "postgres" --engine-version "16.3" --engine-lifecycle-support "open-source-rds-extended-support-disabled" --db-instance-identifier "database-1" --master-username "postgres" --db-instance-class "db.t4g.micro" --db-subnet-group-name "test-subnet-group" --db-name "" --character-set-name 'null' --nchar-character-set-name 'null' --vpc-security-group-ids "sg-xxxxxxxxxxxxxx" --db-security-groups 'null' --availability-zone 'null' --port "5432" --storage-type "gp3" --allocated-storage "20" --iops 'null' --storage-throughput 'null' --kms-key-id 'null' --preferred-maintenance-window 'null' --preferred-backup-window 'null' --backup-retention-period "1" --performance-insights-kmskey-id 'null' --performance-insights-retention-period "7" --monitoring-role-arn 'null' --monitoring-interval 'null' --domain 'null' --domain-iam-role-name 'null' --domain-fqdn 'null' --domain-ou 'null' --domain-auth-secret-arn 'null' --domain-dns-ips 'null' --db-parameter-group-name "default.postgres16" --option-group-name "default:postgres-16" --timezone 'null' --processor-features 'null' --max-allocated-storage "1000" --network-type 'null' --backup-target 'null' --ca-certificate-identifier "rds-ca-rsa2048-g1" --master-user-password "xxxxxxxxxxxxxxxxxxxx"
Resources:
DatabaseInstance:
Type: AWS::RDS::DBInstance
Properties:
Engine: postgres
EngineVersion: 16.3
DBInstanceClass: db.t4g.micro
DBSubnetGroupName: test-subnet-group
VPCSecurityGroups:
- sg-xxxxxxxxxxxxxx
Port: 5432
StorageType: gp3
AllocatedStorage: 20
BackupRetentionPeriod: 1
PerformanceInsightsRetentionPeriod: 7
DBParameterGroupName: default.postgres16
OptionGroupName: default:postgres-16
MaxAllocatedStorage: 1000
CACertificateIdentifier: rds-ca-rsa2048-g1
MasterUsername: postgres
MasterUserPassword: xxxxxxxxxxxxxxxxxxxx
DBInstanceIdentifier: database-1
CLIコマンドに関しては一つ一つ設定値が細かくパラメータとして出力されている形でした。
一方でCloudFormation YAMLではCLIコマンドほどはパラメータが設定されておらず、比較的シンプルな形となっています。
CLIコマンドとCloudFormation YAMLの両方で気になる点として、管理者アカウントのパスワードがハードコードされているのが気になる点です。
認証情報はSecrets Managerを使用して管理し、テンプレート内では参照する形にすることをお勧めします。
例えば、CloudFormationテンプレートの場合、AWS::SecretsManager::Secretリソースを使用してパスワードを管理し、Ref関数で参照させる記載方法がございます。
そのため、生成時の注意書きにも「このコードを開発の出発点として使用してください。」 と記載されている通り生成されたものをそのまま使うのではなく、適宜修正を行うことが必要です。
まとめ
今回は遂に一般提供を開始したConsole-to-Codeを使用してみました。
生成されたものは確認・修正が必要ですが、AWSマネジメントコンソールから自身のやりたいことを操作することで、IaCテンプレートをある程度できた状態から作れるのは、効率化に寄与できるのではないかと感じました。
その他、普段の操作を記録することで、後からIaCで使用できるようにしたい!というユースケースにも対応できるのではないかと思います。
おまけ
「CFN YAMLを生成」の横にあるドロップダウンボタンを押下してみたところ、CDKのソースコードやJSON形式のCFnテンプレートを作成できるようになっていました。
VPCでは、VPC作成の画面に「Preview Code」というのが追加され、実際にVPCを作成をしなくてもConsole-to-Codeが使用できるようになっていました。